5.15. История Lua
История Lua
В начале 1990-х годов группа исследователей из Tecgraf (научно-техническая лаборатория факультета информатики Католического университета Рио-де-Жанейро, PUC-Rio) работала над проектами для Petrobras — крупнейшей бразильской нефтегазовой компании. Их задача заключалась в разработке программного обеспечения для проектирования и моделирования нефтяных месторождений, скважин и трубопроводов.
Эти приложения были мощными, но крайне жёсткими: любое изменение в поведении — например, добавление нового правила расчёта давления или настройка интерфейса — требовало перекомпиляции всей системы. Это замедляло разработку, увеличивало стоимость и делало невозможным адаптацию ПО под нужды конкретного заказчика.
Группе, возглавляемой Роберто Иерусалимским (Roberto Ierusalimschy), стало очевидно: нужно что-то, что позволит пользователям настраивать логику приложения без доступа к исходному коду. Они пробовали использовать существующие языки — Tcl, Python, даже собственные конфигурационные форматы, — но всё было либо слишком тяжёлым, либо плохо встраивалось, либо требовало лицензий. Тогда они приняли решение: создать свой язык.
В 1993 году команда — Роберто Иерусалимский, Луис Эдуардо де Фариа (Luiz Henrique de Figueiredo) и Вальтер Серрапо (Waldemar Celes) — представила первый релиз Lua (произносится «луа», что по-португальски значит «луна»). Имя было выбрано символически: как и луна, которая не светит сама, а отражает свет солнца, Lua существует, чтобы облегчать жизнь другим системам, быть их «отражением», их внутренним скриптовым ядром.
Lua никогда не стремился быть универсальным языком. Он не пытается решать все задачи сразу — ни заменить Python, ни конкурировать с Java.
Его цель — одна: быть идеальным скриптовым языком для расширения приложений.
Эта философия выражена в самом дизайне:
- Нет встроенных библиотек для сетей, GUI или баз данных — всё это остаётся за пределами ядра.
- Нет классов — но есть таблицы и метатаблицы, позволяющие самому реализовать ООП.
- Нет строгой типизации — но есть гибкость и скорость прототипирования.
С самого начала Lua был открытым и свободным. В 1994 году он был выпущен под лицензией, аналогичной MIT, что позволило использовать его бесплатно в любых целях — включая коммерческие продукты. Это стало одной из причин его успеха: разработчики могли встраивать Lua в свои приложения без юридических рисков. Ни одна корпорация не «владеет» Lua — им продолжает заниматься исследовательская группа PUC-Rio, но сообщество вносит вклад в развитие, документацию и библиотеки.
Lua эволюционировал медленно:
- Lua 5.0 (2003) — введение метатаблиц, улучшенная система модулей, goto.
- Lua 5.1 (2006) — стабильная, самая распространённая версия. Используется в World of Warcraft, Nginx, многих движках.
- Lua 5.2 (2011) — новые области видимости (
goto,::label::), улучшения GC,__close metamethod. - Lua 5.3 (2015) — поддержка 64-битных целых чисел, улучшения производительности.
- Lua 5.4 (2020) — потоковая сборка мусора, множественные значения в параметрах, улучшения JIT-совместимости.
Каждое обновление сохраняло обратную совместимость, что критично для embedded-систем, где обновление может быть невозможно.
К 2010-м годам Lua стал популярным в игровой индустрии, особенно после успеха World of Warcraft, где весь пользовательский интерфейс управлялся Lua-скриптами. В этой популярной MMORPG видеоигре, использовались специальные «аддоны», модификации интерфейса, упрощающие жизнь игроку. Но настоящий скачок произошёл с ростом платформы Roblox — виртуального мира, где миллионы пользователей создают свои игры. Roblox выбрал Lua как основу для скриптования игровой логики, но столкнулся с ограничениями - динамическая типизация, отсутствие строгой проверки типов и медленная разработка больших проектов.
В ответ на это, инженеры Roblox разработали Luau — диалект Lua, совместимый с Lua 5.1, но с важными улучшениями - статическая типизация, type inference, nullable-типы, обобщения, улучшенный анализ кода и оптимизированную производительность.
Сегодня Luau — один из самых массовых языков программирования в мире, ведь десятки миллионов детей и подростков учатся программировать на нём в Roblox Studio.